Long-running workflows are common in a broad variety of applications, for example provisioning of servers or databases, systems management and data center management processes. Redundant hardware systems, or distributed systems, may protect a workflow from individual component failures. Distributed systems with physical and/or virtual separation provide high availability.
Programming workflows so they can be executed in a distributed environment and provide high availability requires expert knowledge in distributed systems engineering principles. For other systems that implement workflows for distributed systems, the distributed computing concepts are embedded deeply in software and not re-usable. The resulting software is difficult to maintain or extend.
There exists a need for a simple model framework that facilitates robust programming of distributed, highly available workflows.